﻿using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;
using HMS.Report;

namespace HMS
{
    public partial class ucThongketheonhanvien : UserControl
    {
        private SqlConnection con = new SqlConnection(FRM_Manhinhchinh.sConn);
        private SqlDataAdapter dataAp;
        private DataTable dataTable;
        public ucThongketheonhanvien()
        {
            InitializeComponent();
        }// end ucThongketheonhanvien

        private void ucThongketheonhanvien_Load(object sender, EventArgs e)
        {
            //load du lieu len combobox nhan vien
            SqlConnection con = new SqlConnection(FRM_Manhinhchinh.sConn);
            SqlDataAdapter da = new SqlDataAdapter("select userid, (userid + ' - ' + user_lname + ' ' + user_fname)"
            + " as user_name from tbluser u, tbldepartment d where d.kind_id = '2'"
                + " and d.department_id = u.department_id", con);
            DataTable tb = new DataTable();
            tb.Columns.Add("User_Serial", typeof(int));
            tb.Columns.Add("user_name", typeof(string));
            tb.Rows.Add(0, "Tất cả");
            da.Fill(tb);
            cmbNhanvien.DataSource = tb;
            cmbNhanvien.DisplayMember = "user_name";
            cmbNhanvien.ValueMember = "userid";
        }// end ucThongketheonhanvien_Load

        public DataTable GetDataTable(string sql)
        {
            // Tạo dataApdapter, thực hiện câu lệnh query
            dataAp = new SqlDataAdapter(sql, con);
            // Đổ dữ liệu vào DataTable
            dataTable = new DataTable();
            dataAp.Fill(dataTable);
            return dataTable;
        }// end GetDataTable

        #region Hàm xử lý lọc
        // Lọc dữ liệu theo Ngày
        public void Query_DiaDiemThoiGian(string sInput, string sValue)
        {
            DateTime dtGet = dtpAll.Value;
            string sSQLAll = "select m.UserID, m.Paper_CreateName, m.Patient_ID, m.Patient_LName,"
            + " m.Patient_FName, m.Patient_Age, m.Patient_Gender, m.Paper_CreateDate, m.Paper_Cost,"
            + " d.Department_Name from tbldepartment d, tblme_paper m";            
            grdData.DataSource = null;

            // Chọn nhân viên
            if (cmbNhanvien.Text != "Tất cả")
            {
                string sSQL1 = sSQLAll
                    + " where m.userid = '" + cmbNhanvien.SelectedValue + "' and d.department_id = m.department_id"
                    + " and m.paper_createDate between "
                    + Datetime.FirstDay(dtGet, sInput, sValue) + " and " + Datetime.LastDay(dtGet, sInput, sValue) + "";
                GetDataTable(sSQL1);
                grdData.DataSource = dataTable;
                checkData(dataTable);
            }// end if

            // Chọn tất cả nhân viên
            else
            {
                string sSQL2 = sSQLAll
                    + " where d.department_id = m.department_id"
                    + " and m.paper_createDate between "
                    + Datetime.FirstDay(dtGet, sInput, sValue) + " and " + Datetime.LastDay(dtGet, sInput, sValue) + "";
                GetDataTable(sSQL2);
                grdData.DataSource = dataTable;
                checkData(dataTable);
            }// end else
        }//end Query_DiaDiemThoiGian

        // Lọc dữ liệu theo Khoảng thời gian
        public void Query_DiaDiemThoiGian_Khoangthoigian(string sInput, string sValue)
        {
            DateTime dtStart = dtpFrom.Value;
            DateTime dtEnd = dtpTo.Value;
            string sSQLAll = "select m.UserID, m.Paper_CreateName, m.Patient_ID, m.Patient_LName,"
                    + " m.Patient_FName, m.Patient_Age, m.Patient_Gender, m.Paper_CreateDate, m.Paper_Cost,"
                    + " d.Department_Name from tbldepartment d, tblme_paper m";
            grdData.DataSource = null;

            // Chọn nhân viên
            if (cmbNhanvien.Text != "Tất cả")
            {
                string sSQL1 = sSQLAll
                    + " where m.userid = '" + cmbNhanvien.SelectedValue + "' and d.department_id = m.department_id"
                    + " and m.paper_createDate between "
                    + Datetime.FirstDay(dtStart, sInput, sValue) + " and " + Datetime.LastDay(dtEnd, sInput, sValue) + "";
                GetDataTable(sSQL1);
                grdData.DataSource = dataTable;
                checkData(dataTable);
            }// end if

            // Chọn tất cả nhân viên
            else
            {
                string sSQL2 = sSQLAll
                    + " where d.department_id = m.department_id"
                    + " and m.paper_createDate between "
                    + Datetime.FirstDay(dtStart, sInput, sValue) + " and " + Datetime.LastDay(dtEnd, sInput, sValue) + "";
                GetDataTable(sSQL2);
                grdData.DataSource = dataTable;
                checkData(dataTable);
            }// end else
        }//end Query_DiaDiemThoiGian_Khoangthoigian
        #endregion

        #region Xử lý các nút lọc
        // Event click cho nút Ngày
        private void btnNgay_Click(object sender, EventArgs e)
        {
            btnNgay.LookAndFeel.SetSkinStyle("Valentine");
            btnTuan.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnThang.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnQui.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnNam.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnKhoangthoigian.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            // Lọc dữ liệu theo Ngày
            Query_DiaDiemThoiGian("dd","");
        }// end btnNgay_Click

        // Event click cho nút Tuần
        private void btnTuan_Click(object sender, EventArgs e)
        {
            btnNgay.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnTuan.LookAndFeel.SetSkinStyle("Valentine");
            btnThang.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnQui.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnNam.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnKhoangthoigian.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            // Lọc dữ liệu theo Tuần
            Query_DiaDiemThoiGian("wk", "-1");
        }// end btnTuan_Click

        // Event click cho nút Tháng
        private void btnThang_Click(object sender, EventArgs e)
        {
            btnNgay.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnTuan.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnThang.LookAndFeel.SetSkinStyle("Valentine");
            btnQui.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnNam.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnKhoangthoigian.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            // Lọc dữ liệu theo Tháng
            Query_DiaDiemThoiGian("mm", "-1");
        }// end btnThang_Click

        // Event click cho nút Qúi
        private void btnQui_Click(object sender, EventArgs e)
        {
            btnNgay.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnTuan.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnThang.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnQui.LookAndFeel.SetSkinStyle("Valentine");
            btnNam.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnKhoangthoigian.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            // Lọc dữ liệu theo Qúi
            Query_DiaDiemThoiGian("qq", "-1");
        }// end btnQui_Click

        // Event click cho nút Năm
        private void btnNam_Click(object sender, EventArgs e)
        {
            btnNgay.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnTuan.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnThang.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnQui.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnNam.LookAndFeel.SetSkinStyle("Valentine");
            btnKhoangthoigian.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            // Lọc dữ liệu theo Năm
            Query_DiaDiemThoiGian("yy", "-1");
        }// end btnNam_Click

        // Event click cho nút Khoảng thời gian
        private void btnKhoangthoigian_Click(object sender, EventArgs e)
        {
            btnNgay.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnTuan.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnThang.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnQui.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnNam.LookAndFeel.SetSkinStyle("Office 2010 Blue");
            btnKhoangthoigian.LookAndFeel.SetSkinStyle("Valentine");
            // Lọc dữ liệu theo Khoảng thời gian
            Query_DiaDiemThoiGian_Khoangthoigian("dd","");
        }// end btnKhoangthoigian_Click
        #endregion

        #region Xử lý các nút tác vụ
        // Event click cho nút Xem trước
        private void btnXemtruoc_Click(object sender, EventArgs e)
        {
            rptThongketheonhanvien rpt = new rptThongketheonhanvien();
            rpt.lblNguoilap.Text = String.Format("{0} - {1}", FRM_Dangnhap.userid, FRM_Dangnhap.name);
            rpt.DataSource = dataTable;
            rpt.DataMember = "dataTable";
            rpt.ShowRibbonPreviewDialog();
        }// end btnXemtruoc_Click

        // Event click cho nút In
        private void btnIn_Click(object sender, EventArgs e)
        {
            rptThongketheonhanvien rpt = new rptThongketheonhanvien();
            rpt.lblNguoilap.Text = String.Format("{0} - {1}", FRM_Dangnhap.userid, FRM_Dangnhap.name);
            rpt.DataSource = dataTable;
            rpt.DataMember = "dataTable";
            rpt.PrintDialog();
        }// end btnIn_Click
        #endregion

        // Tăng số tự động theo dòng Grid
        private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
        {
            if (e.Column == sothutu) e.DisplayText = (e.RowHandle + 1).ToString();
        }// end gridView1_CustomDrawCell

        private void checkData(DataTable tbl)
        {
            // Không tồn tại dữ liệu
            if (tbl.Rows.Count == 0)
            {
                Set_Button(false);
                MessageBox.Show("Dữ liệu rỗng đối với lựa chọn này !", "Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }// end if

            // Tồn tại dữ liệu
            else
            {
                Set_Button(true);
                return;
            }// end if
        }// end checkData

        // Status của nút Xem trước và in
        private void Set_Button(bool bCheck)
        {
            btnXemtruoc.Enabled = bCheck;
            btnIn.Enabled = bCheck;
        }// end Set_Button

        #region Kiểm tra điều kiện các components
        private void cmbNhanvien_DropDownClosed(object sender, EventArgs e)
        {
            Set_Button(false);
        }// end cmbDonvitiepnhan_DropDownClosed

        private void dtpAll_CloseUp(object sender, EventArgs e)
        {
            Set_Button(false);
        }// end dtpAll_CloseUp

        private void dtpFrom_CloseUp(object sender, EventArgs e)
        {
            Set_Button(false);
        }// end dtpFrom_CloseUp

        private void dtpTo_CloseUp(object sender, EventArgs e)
        {
            Set_Button(false);
        }// end dtpTo_CloseUp
        #endregion
    }// end class
}// end namespace